Often, a mobile device user wants to select and interface with software application from a remote desktop computer on his mobile device as if applications run on the mobile device. The desktop host computer can have several applications running at the same time either required to the user or started and executed independently. The user applications can be running on the host operating system (OS) or within a virtual environment, such as a Virtual Machine or a container.
Remote Access Software, typically, captures a window of a remote application on the host. The user of a mobile device does not see a desktop of a remote computer and only sees the actual application scaled up to the entire mobile device screen. The Remote Access Software provides the application window, but does not block move and resize user actions performed on an active window.
Examples of Remote Access Applications are: Parallels Access® (former Parallels Mobile), SplashTop® Remote Desktop, TeamViewer®. Other solutions for remote access are Access Remote PC, Ammyy Admin®, Apple Remote Desktop™, Citrix® GoToMyPC®, GPP Remote Control, LogMeln®, Radmin®, RDM+Remote Desktop, VNC, Windows Remote, Assistance, Xtralogic® Remote Desktop, etc.
Note that TeamViewer® for mobile devices does not provide for remote window capture. SplashTop® and Parallels Access® use a single window on the client mode, where upon connecting to a remote computer, the resolution of the remote computer's screen changes to the resolution of the screen of the mobile device. If a mobile device is used as a client device, small screen size and an absence of the mouse can result in an inaccurate transmitting of the application window on the mobile device screen at any attempt to move or resize the window.
In particular, if a user uses a finger or stylus to press on the header area (Title bar+Menu bar+Tool bar) of a window and begins to pull it to the side, the window moves after the finger but as soon as the finger releases the window, it returns to its initial shape and position, because it is in a captured mode. In this mode, capturing utility or capturing procedure of remote access, the agent captures application window within the boundaries of the window, and the absolute position of the window is not considered in the process of capturing. However, the window captured during the moving process may have motion artifacts, such as dropped lines in different frames, changing absolute size of window and so on. Also, moving the window is a process that taxes computation resources and is often unwanted. Such “bouncing” of the window back and forth constitutes a wrong (incorrect) behavior, since the application that is being transmitted does not do it in its desktop version. Furthermore, it is very easy to press on the wrong part of a small window with the finger.
Accordingly, it is desired to allow the mobile device window to move and change its size while providing correct transmitting to a user. Given a small size of mobile device windows, when move or resize events occur, the useful area of a captured window becomes even smaller. Since a mobile device does not have a mouse, a standard event mouseOver (i.e., a mouse cursor is placed over an element, but the click has not happened yet) an application developer cannot inform a user (in tap mode—without visualization of mouse cursor) of a possible action that can be performed with the window by using fold out or pop-up menus and hints.
This negatively affects usability of the application, if a user accidently touches a header of the window and moves the finger slightly sideways (instead of straight up). Currently, attempts made by the developers of the Remote Access Software to prohibit the move and resize events on the host (partner-side) have not been successful. The inherent logic of a remote application cannot be changed by clicks, touch and move actions on its window. It is also not possible to acquire data reflecting custom application controls of the remote application.
In theory, low-level OS commands of a remote computer can be accessed in order to control the remote application. However, this solution is very costly and complex. Also, this approach can destroy security of the entire system. Another solution for accessing a remote desktop application is proposed by Synergy™ (http:**synergy-foss.org/).
The Synergy™ system lets a user to easily share his mouse and a keyboard among multiple computers on his desk. The Synergy™ runs as a client/server application, where the server is the computer that has the keyboard and the mouse attached to it, and all other computers are connected as clients. Switching from one display to another is only a matter of moving the mouse to the edge of the screen. The Synergy™ system detects the mouse pointer leaving one screen and entering another. This solution can be useful while doing presentations on several screens belonging to different computers. However, it does not help in terms of transmitting remote applications on mobile devices.
Applications developed for mobile devices do not normally have windows that are moved and resized, since the form factor of the mobile device does not usually permit it physically. Thus, when in the Application Mode and a remote window is captured, it is necessary to make sure that the user does not move or resize the window here as well. This will make the user feel as if the application that he is working with is running on the mobile device.
Accordingly, it is desired to have system for blocking mouse events on mobile devices rendering remote application windows as if the application runs locally on a mobile device.